
% Первая глава работы 
\chapter{Network Address Translation}
\label{chap1}

\section{Как работает NAT}
\label{chap1:sec1}
NAT необходим, когда количество IP -- адресов выданных провайдером, меньше чем количество компьютером, которым необходимо обеспечить выход в Интернет.  NAT позволяет использовать зарезервированные блоки адресов, описанные в Address Allocation for Private Internets (RFC 1918):
\begin{verbatim}
	10.0.0.0/8       (10.0.0.0 - 10.255.255.255)
	172.16.0.0/12    (172.16.0.0 - 172.31.255.255)
	192.168.0.0/16   (192.168.0.0 - 192.168.255.255)
\end{verbatim}
Когда клиент из внутренней сети связывается с машиной в Интернете, он посылает IP пакеты предназначенные этой машине. Эти пакеты содержат всю необходимую информацию об адресате. NAT работает с этой информацией: 
\begin{itemize}
\item Исходный IP -- адрес (например, 192.168.1.35) 
\item Исходный TCP -- или UDP -- порт (например, 2132) 
\end{itemize}
Когда пакеты проходят через NAT шлюз, они будут изменены таким образом, что они будут представляться этим шлюзом. NAT шлюз будет записывать изменения, которые он делает в таблицу состояний, поэтому он может сделать одну из следующих вещей:
\begin{itemize}
\item обратное преобразование ответных пакетов 
\item убедиться, что ответные пакеты прошли через брандмауэр и не были блокированы.
\end{itemize}
В заголовке пакета могут быть сделаны следующие изменения: 
\begin{itemize}
\item Исходный IP: заменит внешним адресом шлюза. 
\item Исходный порт: заменит случайно выбранным не используемым портом шлюза.
\end{itemize}

Ни внутренняя машины, ни хост в интернете не знают об этих преобразованиях. Для внутренней машины NAT система это всего лишь Интернет шлюз. Для интернет хоста, который не знает о существовании внутренней машины, пакеты приходят на прямую от NAT системы. Когда интернет хост отвечает внутренней машине, пакеты будут адресованы на IP NAT шлюза (24.5.0.5), на заменённый порт (53136). NAT шлюз будет просматривать таблицу состояний чтобы определить принадлежат ли ответные пакеты уже установившемуся соединению. Соответствие будет найдено на основе комбинации IP/port, которая сообщит PF о том, что пакеты принадлежат соединению инициированному машиной 192.168.1.35. PF сделает обратное преобразование и отправит ответные пакеты внутренней машине. 

\textbf{Фильтрация пакетов}

Трансляция происходит до фильтрации, фильтр будет видеть уже преобразованные пакеты с преобразованным IP адресом и портом. Преобразуемые пакеты должны проходить через фильтр и будут блокированы или пропущены, в зависимости от фильтрующих правил, которые были заданы. Единственное исключение из этих правил, это когда используется ключевое слово pass с правилом nat. В этом случает пакеты проходящие NAT преобразования будут проходить без проверки правилами. 

\section{Преимущества и недостатки}
\label{chap1:sec2}
\textbf{Преимущества}

NAT выполняет три важных функции:
\begin{enumerate}
\item Позволяет сэкономить IP -- адреса, транслируя несколько внутренних IP -- адресов в один внешний публичный IP -- адрес (или в несколько, но меньшим количеством, чем внутренних). По такому принципу построено большинство сетей в мире: на небольшой район домашней сети местного провайдера или на офис выделяется 1 <<белый>> (то есть внешний) IP -- адрес, за которым работают и получают доступ во вне все <<серые>> IP -- адреса, т.е. внутренние.
\item Позволяет предотвратить или ограничить обращение снаружи ко внутренним хостам, оставляя возможность обращения изнутри наружу. При инициации соединения изнутри сети создаётся трансляция. Ответные пакеты, поступающие снаружи, соответствуют созданной трансляции и поэтому пропускаются. Если для пакетов, поступающих снаружи, соответствующей трансляции не существует (а она может быть созданной при инициации соединения или статической), они не пропускаются.
\item Позволяет скрыть определённые внутренние сервисы внутренних хостов/серверов. По сути, выполняется та же указанная выше трансляция на определённый порт, но возможно подменить внутренний порт официально зарегистрированной службы (например, 80-ый порт TCP --- HTTP --сервер), на внешний 54055-ый. Тем самым, снаружи, на внешнем IP -- адресе после трансляции адресов на сайт (или форум) для осведомлённых посетителей можно будет попасть по адресу http://mysite.org:54055, но на внутреннем сервере, находящимся за NAT, он будет работать на обычном 80-ом порту. Повышение безопасности и скрытие <<непубличных>> ресурсов.
\end{enumerate}

\textbf{Недостатки}

При использовании NAT хосты Internet взаимодействуют напрямую с NAT -- устройством, а не с реальным хостом в частной сети. Входящие пакеты передаются по IP -- адресу устройства NAT, а устройство меняет адрес назначения в заголовке пакета со своего собственного Internet -- адреса на адрес частной сети реального хоста назначения.
В результате — теоретически — единый уникальный в глобальном масштабе IP -- адрес может скрывать за собой сотни, тысячи или даже миллионы хостов, чьи адреса определены в частной сети. На практике, однако, такой подход имеет ряд недостатков. Например, многие Internet -- протоколы и приложения существенно опираются на тот факт, что сеть в действительности поддерживает соединение из конца в конец, когда пакеты передаются без каких--либо изменений от отправителя получателю. Архитектура IP--защиты не может поддерживать работу через устройство NAT, поскольку оригинальные заголовки, в которых указаны исходные IP -- адреса отправителей, защищены с помощью цифровой подписи. При изменении исходного адреса цифровая подпись потеряет свою целостность.

\begin{enumerate}
\item Не все протоколы могут «преодолеть» NAT. Некоторые не в состоянии работать, если на пути между взаимодействующими хостами есть трансляция адресов. Некоторые межсетевые экраны, осуществляющие трансляцию IP -- адресов, могут исправить этот недостаток, соответствующим образом заменяя IP -- адреса не только в заголовках IP, но и на более высоких уровнях.
\item Из--за трансляции адресов «много в один» появляются дополнительные сложности с идентификацией пользователей и необходимость хранить полные логи трансляций.
\item DoS со стороны узла, осуществляющего NAT: если NAT используется для подключения многих пользователей к одному и тому же сервису, это может вызвать иллюзию DoS атаки на сервис (множество успешных и неуспешных попыток). Например, избыточное количество пользователей ICQ за NAT’ом приводит к проблеме с подключением к серверу некоторых пользователей из-за превышения допустимой скорости коннектов. Частичным решением проблемы является использование пула адресов (группы адресов), для которых осуществляется трансляция.
\item В нектоторых случаях, необходимость в дополнительной настройке  при работе с пиринговыми сетями и некоторыми другими программами , в которых необходимо не только инициировать исходящие соединения, но также принимать входящие.
\end{enumerate}
\cite{lit7}

\section{Типы маршрутизаторов NAT}
\label{chap1:sec3}
~~~~
\textbf{Cone NAT}
Внутренний адрес (192.168.0.2:2210) проецируются на внешний адрес (1.1.1.2:8801). Любой пакет посланный с 192.168.0.2:2210 будет послан через 1.1.1.2:8801. Любой пакет с внешнего хоста, посланный на адрес 1.1.1.2:8801 будет отправлен на 192.168.0.2:2210
\begin{figure}[!h!]
 \centerline{\includegraphics[width=0.7\textwidth]{ConeNATrouter}}
 \caption{Cone NAT}
\label{fig1}
\end{figure}

\textbf{Address--Restricted cone NAT} 
Или еще по дрегому его называют \textbf{Restricted cone NAT}.
Внутренний адрес (192.168.0.2:2210) проецируются на внешний адрес (1.1.1.2:8801). Любой пакет посланный с 192.168.0.2:2210 будет послан через 1.1.1.2:8801. Пакет с любого порта внешнего хоста, посланный на адрес 1.1.1.2:8801 будет отправлен на 192.168.0.2:2210 только в случае, если 192.168.0.2:2210 предварительно посылал пакет на этот внешний хост.
\begin{figure}[!h!]
 \centerline{\includegraphics[width=0.7\textwidth]{RestrictedConeNATRouter}}
 \caption{Address--Restricted cone NAT}
\label{fig2}
\end{figure}

\textbf{Port--Restricted cone NAT}
Внутренний адрес (192.168.0.2:2210) проецируются на внешний адрес (1.1.1.2:8801). Любой пакет посланный с 192.168.0.2:2210 будет послан через 1.1.1.2:8801. Внешний хост (1.1.1.30:1234) модет послать пакет на 192.168.0.2:2210 через 1.1.1.2:8801 только в случае если ранее 192.168.0.2:2210 слал пакет на 1.1.1.30:1234
\begin{figure}[!h!]
 \centerline{\includegraphics[width=0.7\textwidth]{Restricted}}
 \caption{Port--Restricted cone NAT}
\label{fig3}
\end{figure}

\textbf{Symmetric NAT}
Каждый пакет с определенного внутреннего IP адреса:порта на определенный внешний IP адрес:порт будет иметь после трансляции уникальный внешний адрес порт. Соответственно, пакет с одного и того-же внутреннего адреса:порта, но посланный на другой внешний хост или порт после трансляции будет иметь другой внешний адрес-порт. Внешние хосты могут послать обратный пакет только на те хосты:порты откуда они получили пакеты.
\begin{figure}[!h!]
 \centerline{\includegraphics[width=0.7\textwidth]{xdffdf}}
 \caption{Symmetric NAT}
\label{fig4}
\end{figure}
\cite{lit4}






%%% Local Variables:
%%% mode: latex
%%% coding: utf-8-unix
%%% TeX-master: "../default"
%%% End:
